<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
            优势:
                1. 指定回调函数的方式更加灵活:
                    旧的: 必须在启动异步任务之前指定
                    promise: 启动异步任务 => 返回promise对象 => 给promise对象绑定回调函数(甚至可以在异步任务结束后指定)

                2. 支持链式调用，解决了回调地狱的问题
                    (1). 什么是回调地狱:
                            回调函数嵌套调用，外部函数异步执行的结果是嵌套的回调函数执行的条件
                    (2). 回调地狱的弊端
                            代码不便于阅读、不便于异常的处理
                    (3). 一个不是很优秀的解决方案;
                            then的链式调用
                    (4). 终极解决方案
                            async/await(实际上依然是then的链式调用)
        */
    </script>
</body>
</html>